/*
Pablo Sosa, 12546
* Yoly Moreno, 12519
* Fecha 30 de septiembre de 2013
 * Descripcion del programa:Programa principalq ue contiene el main
*/


//Nota, referencia tomada de Luis Levia, 2011. Guatemala


//importa librearia
import java.util.Scanner;

public class Driver {
    public static void main(String[] args) {
        
        String cadCaracteres="";
        Scanner entrada = new Scanner(System.in); //paara leer desde entrada
        Heap lista;

     //instrucciones
        instrucciones();
        //Ingreso desde entrada
        cadCaracteres = entrada.nextLine();
        //Creacion de arbol con n cantidad de elementos
        lista = new Heap(cadCaracteres.length());

        //Aqui se ingresa el caracter al nodo para que pueda ser evaluado
        for(int i =0; i < cadCaracteres.length(); i++) {            
            Nodo query = new Nodo(cadCaracteres.charAt(i));
            Nodo arbol = lista.quitar(query);
            if (arbol == null) {
                lista.agregar(query);
            } else {
                arbol.masFrec();
                lista.agregar(arbol);
            }
        }

        //creacion de arbol con los nodos que se esten utilizando
        while(lista.getNumero() > 1) {
            Nodo variableNodo = new Nodo();
            int var1, var2;
            var1= lista.head().getFrec() ;
            variableNodo.setIzq(lista.quitar());
            //manda a llamar metodos
            var2 = lista.head().getFrec();
            variableNodo.setDer(lista.quitar());
         //   
            variableNodo.setFrecuencia(var1+var2);
            lista.agregar(variableNodo);
        }

        lista.head().recorrerTodo();

    }

    //parte de lo que se le mostrara al usuario en pantalla como instruccion
public static void instrucciones() {
       
        System.out.println("Ingrese la cadena de caracteres: ");
}

}

//referencias del libro ava Structures: Data Structures for the Principled Programmer
